Validation associated with a form

ABSTRACT

Form validation is disclosed, including: generating a first parameter and a second parameter in response to a request for a form from a client device; sending a first triggering message including the first parameter and the second parameter to the client device; receiving data associated with submission of the form; and determining whether the data associated with the submission of the form includes the hidden form field that matches the first parameter and a submitted value corresponding to the hidden form field that corresponds to the second parameter, in the event that the hidden form field matches the first parameter and the submitted value corresponding to the hidden form field corresponds to the second parameter, determine that the data associated with the submission of the form is successfully validated.

CROSS REFERENCE TO OTHER APPLICATIONS

This application is a continuation of co-pending U.S. patent applicationSer. No. 13/787,259, entitled VALIDATION ASSOCIATED WITH A FORM filedMar. 6, 2013 which is incorporated herein by reference for all purposes,which claims priority to People's Republic of China Patent ApplicationNo. 201210059741.8 entitled A FORM VALIDATION METHOD, DEVICE, ANDSYSTEM, filed Mar. 8, 2012 which is incorporated herein by reference forall purposes.

FIELD OF THE INVENTION

The present application involves the field of internet technology. Inparticular, the present application relates to techniques for formvalidation.

BACKGROUND OF THE INVENTION

Forms are an important means of exchanging data between client devicesand servers, for example. Sometimes forms are also used by clientdevices for the purpose of local and/or remote data collection.

Forms typically comprise form fields and form buttons and othercomponents. For example, other components that may be included in formsinclude input fields, such as text fields and password fields. Toincrease transmission security, during the generation of forms, hiddenform fields with preset names are also generated and included in certainforms. A hidden form field is an invisible element of the form that isnot seen by a user that visits the webpage at which the form ispresented. Therefore, the user cannot input any content into a hiddenfield, which is why sometimes the hidden field is used to submitinformation that is not input by the user.

Conventionally, a client device retrieves a user requested form (e.g.,associated with a webpage that is visited by the user), the form ispresented by the web browser installed at the client device, and theuser can input data into the form's input fields. After the usercompletes filling out the form, the user selects a form submissionbutton and the client device submits the data that was input into theform to an associated web server where the web server may furtherprocess the submitted form data. However, conventional techniquestypically cannot determine whether the form data was completed by a realperson user (a human). One reason it would be desirable to ensure thatform data is completed and submitted by human users is that when formsare automatically completed and/or submitted by robots or specializedcomputer programs, negative consequences such as spamming or maliciousforum flooding may occur.

One conventional technique of validating that a submitted form wascompleted by a human user is realized by validating one or more hiddenfields included in the form. For example, a hidden form field includes aname and a value. Each time the form is requested by the client device(as a result of a user request), the server generates a random characterand transmits it to the client device, which causes the client device touse the random character as the numerical value of the hidden formfield. As such, when the server receives the user-completed formsubmitted by the client device, form validation is realized by verifyingwhether or not the value of the hidden form field matches the randomcharacter generated by the server.

However, because the client device generates the hidden form field atthe same time that it generates the form, the name of the hidden formfield is set in advance, and so the name of the hidden form fieldgenerated upon each request for the form is always the same. Therefore,it is possible that through multiple requests of the form by the clientdevice, malicious automatic completion programs are able to determinethe hidden form field name through analysis, so that the programs areeventually able to recognize the form and thereby perform automatedcompletion of the form.

BRIEF DESCRIPTION OF THE DRAWINGS

Various embodiments of the invention are disclosed in the followingdetailed description and the accompanying drawings.

FIG. 1 is a diagram showing an embodiment of a system for formvalidation.

FIG. 2 is a flow diagram showing an embodiment of a process for formvalidation.

FIG. 3 is a flow diagram showing an embodiment of a process for formvalidation.

FIG. 4 is a flow diagram showing an embodiment of a process for formvalidation.

FIG. 5 is a flow diagram showing an embodiment of a process for formvalidation.

FIG. 6 is a diagram showing an embodiment of a system of formvalidation.

FIG. 7 is a diagram showing an embodiment of a system of formvalidation.

DETAILED DESCRIPTION

The invention can be implemented in numerous ways, including as aprocess; an apparatus; a system; a composition of matter; a computerprogram product embodied on a computer readable storage medium; and/or aprocessor, such as a processor configured to execute instructions storedon and/or provided by a memory coupled to the processor. In thisspecification, these implementations, or any other form that theinvention may take, may be referred to as techniques. In general, theorder of the steps of disclosed processes may be altered within thescope of the invention. Unless stated otherwise, a component such as aprocessor or a memory described as being configured to perform a taskmay be implemented as a general component that is temporarily configuredto perform the task at a given time or a specific component that ismanufactured to perform the task. As used herein, the term ‘processor’refers to one or more devices, circuits, and/or processing coresconfigured to process data, such as computer program instructions.

A detailed description of one or more embodiments of the invention isprovided below along with accompanying figures that illustrate theprinciples of the invention. The invention is described in connectionwith such embodiments, but the invention is not limited to anyembodiment. The scope of the invention is limited only by the claims andthe invention encompasses numerous alternatives, modifications andequivalents. Numerous specific details are set forth in the followingdescription in order to provide a thorough understanding of theinvention. These details are provided for the purpose of example and theinvention may be practiced according to the claims without some or allof these specific details. For the purpose of clarity, technicalmaterial that is known in the technical fields related to the inventionhas not been described in detail so that the invention is notunnecessarily obscured.

The present application can be used in many general-purpose orspecialized computing device environments or configurations. Forexample: personal computers, server computers, handheld equipment orportable equipment, tablet equipment, multiprocessor devices, anddistributed computing environments comprising any of the above devicesor equipment, etc. can be used.

The present application can be described in the general context ofcomputer executable commands executed by a computer, such as a programmodule. Generally, program modules include routines, programs, objects,components, data structures, etc. to execute specific tasks or achievespecific abstract data types. The present application can also becarried out in distributed computing environments. In such distributedcomputing environments, tasks are executed by remote processingequipment connected via communication networks. In distributed computingenvironments, program modules can be located on storage media at localor remote computers that include storage equipment.

Embodiments of form validation are described herein. In variousembodiments, in response to a user request received at a server for aform, a first parameter and a second parameter are generated by theserver. For example, the user request is associated with a user using aweb browser to access a webpage associated with the form. In someembodiments, the respective values of the first parameter and the secondparameter are randomly generated. At least data associated with the formand a first triggering message including the first parameter and thesecond parameter are transmitted to the client device. The client deviceis configured to generate the form to be presented to a user. The firsttriggering message is configured to cause a hidden form field to begenerated at the client device based on the first parameter and a valuecorresponding to the hidden form field to be generated based on thesecond parameter. A value determined based on the second parameter willbe assigned as the value corresponding to the hidden form field if avalue assignment event is detected with respect to the client device.The value assignment event is configured to be any event/operation thatis associated with a human interaction associated with the clientdevice, such as a received mouse movement. The completed form includingthe hidden form field and the value corresponding to the hidden formfield is submitted to the server. In the event that the server verifiesthat the hidden form field corresponds to the first parameter and thesubmitted value of the hidden form field corresponds to the secondparameter, then the submitted form data is successfully validated andthe server may continue to process the received data. It is assumed thatsubmitted form data is submitted by a human user and therefore validatedbecause the correct value, the value based on the second parameter, wasassigned as the value corresponding to the hidden form field in responseto a detection of a human-related value assignment event and that shouldan automatic completion computer program have attempted to complete theform data, the program would not have learned the hidden form fieldand/or its corresponding value would not have successfully completed theform. However, if the server determines either or both that the hiddenform field does not correspond to the first parameter or the submittedvalue of the hidden form field does not correspond to the secondparameter, then the submitted data is assumed to not have been completedby a human user and so the data is not successfully validated and theserver may not process the received data.

FIG. 1 is a diagram showing an embodiment of a system for formvalidation. In the example, system 100 includes device 102, network 104,validation server 106, and database 108. Network 104 may includehigh-speed networks and/or telecommunication networks.

A user may use device 102 to request a form from a web server associatedwith validation server 106. For example, the form may be associated withlogging into a website or posting a comment at an online forum. Whiledevice 102 is shown to be a laptop, other examples of device 102 mayinclude a desktop computer, a tablet device, a mobile device, a smartphone, and any other type of computing device. For example, a user mayrequest the form using a web browser or other application running ondevice 102 to access a particular webpage associated with the form.

In response to the request for the form, validation server 106 isconfigured to generate at least a first parameter and a secondparameter. In some embodiments, validation server 106 is configured togenerate a new first parameter and a new second parameter for eachreceived request. In some embodiments, validation server 106 isconfigured to store a relationship between each received request and thecorresponding first parameter and second parameter generated for therequest at database 108. Validation server 106 is configured to send afirst triggering message that includes the first parameter and thesecond parameter to device 102. The first triggering message includescomputer code that when executed is configured to cause a hidden formfield to be generated at device 102 based at least in part on the firstparameter and to be added to the form and a value corresponding to thehidden form field to be determined based at least in part on the secondparameter. In response to receiving the first triggering message, device102 is configured to generate the hidden form field based on the firstparameter and, in response to detection of a value assignment event,assign a value to the hidden form field based on the second parameter.Validation server 106 is configured to receive from device 102 dataassociated with submission of the form. Validation server 106 isconfigured to determine whether the submitted data can be validatedbased on whether the received data corresponds to the first parameterand the second parameter associated with the requested form (asdetermined using database 108), as will be described in detail below.

FIG. 2 is a flow diagram showing an embodiment of a process for formvalidation. In some embodiments, process 200 is implemented at system100.

At 202, in response to receipt of a request for a form from a clientdevice, a first parameter and a second parameter are generated. Forexample, a user using a web browser installed at a client device toaccess a website may encounter a webpage associated with a form. Theuser may select to visit the webpage, which causes the web browser tosend a request for data, including the form, associated with thewebpage. The request is received at a web server associated with thewebpage. For example, the form may be a registration form, a sign-inform, or a comment posting form associated with an online forum.

In some embodiments, the first parameter and the second parameter may beassigned two respective randomly generated strings. For example, eachstring may include one or more alphanumeric characters. In someembodiments, to enhance the security of the information and to preventtheft, the randomly generated strings are first encrypted before beingassigned, respectively, to the first parameter and the second parameter.For example, the strings to be assigned, respectively, to the firstparameter and the second parameter are encrypted with random encryptionkeys generated using any encryption key technique. In a specificexample, in response to receipt of a request for a form from a clientdevice, the server randomly generates strings, String1 and String2,which are encrypting using a website encryption key and/or timestampinformation to separately generate encrypted strings E(String1) andE(String2), which are respectively assigned to the first parameter andthe second parameter. The website encryption key can be a uniqueidentification number of the website that the user is currentlybrowsing. The timestamp may, for example, be the client device'soperating system's current time. An example of an encryption techniqueto use is MD5 (Message Digest Algorithm, version 5). In someembodiments, in order to increase the complexity of encryption, anautomatically defined encryption technique using a scripting languageexecuted by the server, such as PHP (Hypertext Preprocessor), may beused as the encryption technique. The server is configured to store thefirst parameter and the second parameter so that the server can latercompare data submitted over the form to the stored first and secondparameters.

At 204, a first triggering message including the first parameter and thesecond parameter is sent to the client device, wherein the firsttriggering message is configured to cause a hidden form field to begenerated at the client device based at least in part on the firstparameter, to be added to the form, and a value corresponding to thehidden form field to be determined based at least in part on the secondparameter. The server is configured to send data associated with therequested form and a first triggering message to the client device. Thefirst triggering message includes at least the first parameter and thesecond parameter. In response to receiving the data from the server, theclient device (or a web browser application installed at the clientdevice) is configured to generate the form based on the received data.In some embodiments, the first triggering message includes instructionsand/or computer code that when executed causes the client device (or aweb browser application installed at the client device) to generate ahidden form field to add to the form. The hidden form field is notvisible to users who are presented with the form. The hidden form fieldand its corresponding value will be submitted to the server along withthe rest of the data input into the form when the form is submitted tothe server. The hidden form field comprises a name and a value. In someembodiments, the value of the hidden form field is a numerical value.The first triggering message causes the client device (or a web browserapplication installed at the client device) to generate the name of thehidden form field based on the first parameter and, in response to adetected value assignment event, to assign to the hidden form field avalue determined based on the second parameter. In some embodiments, theclient device's generation of the hidden form field is based on invokinga hidden form field generation function. In order to avoid interceptionof the client device's form data by malware for the purpose of analyzingthe content of the hidden form field, the server may include in thefirst triggering message instructions to cause the client device toperform obfuscation processing, i.e., code obfuscation, on the hiddenform field generation function and other executable code, so that evenif the obfuscated code is intercepted, the intercepting party will beunable to recognize it.

In some embodiments, after the hidden form field is generated based onthe first parameter, the hidden form field is assigned a temporaryvalue. Then when a value assignment event is detected, a validationstring that is generated based on the second parameter is assigned asthe value of the hidden form field (to replace the previously assignedtemporary value). The validation string may be generated by the serverand sent to the client device or the validation string may be generatedat the client device. The value assignment event refers to an eventtriggered when a real person user (a human user) executes an operationwith respect to the client device (e.g., a human-machine interactionthat is performed by the human user and received at an interface of theclient device). For example, a value assignment event is a mousemovement event. For example, during the process of completing the form,a human user needs to operate the mouse so that the mouse cursor moveson the display interface of the client device. Thus, when the clientdevice detects such a mouse movement event, this event represents thatthe user completing the form is a human user and so a value determinedbased on the second parameter is then assigned to the hidden form field.In some embodiments, events that are considered as value assignmentevents may be configured by a system operator. Thus, even if the firstparameter and the second parameter are obtained by a malicious automaticform completion program, the program may not be able to achieve theassignment of a correct value to the hidden form field. Other examplesof value assignment events include a keyboard operation event, atouchscreen operation (if the device supports a touchscreen as an inputdevice), or any other events that are able to distinguish formoperations executed by humans from those executed by automaticcompletion programs.

In some embodiments, the validation string to be assigned to replace thetemporary value corresponding to the value of the hidden form field inresponse to the detection of a value assignment event is determined tobe the same as the second parameter. If the validation string is thesame as the second parameter, then in response to the detection of avalue assignment event, the second parameter is assigned as the value ofthe hidden form field.

In some embodiments, the validation string to be assigned to replace thetemporary value corresponding to the value of the hidden form field inresponse to the detection of a value assignment event is determinedbased on an encryption technique and the second parameter. For example,the encryption technique used to generate the validation string based onthe second parameter may be MD5. In some embodiments, the serverdetermines the encrypted value of the validation string and sends thevalidation string to the client device. In some embodiments, theencryption technique used to determine the validation string based onthe second parameter may be selected in advance at the client device ordynamically determined by a script. For example, an executing script(e.g., JavaScript) may cause the selected encryption technique to beperformed on the second parameter to yield the validation string. Insome embodiments, other information such as a website encryption key andthe timestamp may also be used in addition to the second parameter andthe encryption technique to generate the validation string.

In some embodiments, after the server generates the validation string,it stores the validation string. The server may store the validationstring associated with a session and associate the validation stringwith an expiration period. If the form to which the hidden form field isadded is submitted after the expiration period since the form wasrequested, then the server will automatically determine that thesubmitted data associated with the form is not successfully validated.

At 206, data associated with submission of the form is received. Aftervalues are input corresponding to other fields of the form, for example,the form may be submitted by selection of a selectable element(“button”) configured to submit the data input into the form to theserver. Or for example, the form can also be submitted through anautomatic form submission process. The data associated with the hiddenform field is also submitted with the other values input into the form.

At 208, it is determined whether the data associated with the submissionof the form includes the hidden form field that matches the firstparameter and a submitted value corresponding to the hidden form fieldthat corresponds to the second parameter. In the event that the hiddenform field matches the first parameter and the submitted valuecorresponding to the hidden form field corresponds to the secondparameter, determine that the data associated with the submission of theform is successfully validated.

After the server receives the data submitted over the form to which thehidden form field has been added, the server first determines whetherthe hidden form field matches to the first parameter that the server hadgenerated. Then the server verifies whether the submitted valuecorresponding to this hidden form field corresponds to the second randomparameter that the server had generated. In the event that thevalidation string that was assigned as the value of the hidden formfield is the same as the second parameter, then the server determinesthat the submitted value corresponding to the hidden form fieldcorresponds to the second parameter if the value corresponding to thehidden form field is the same as the second parameter. In the event thatthe validation string that was assigned as the value of the hidden formfield is determined using an encryption technique and the secondparameter, the server determines that the submitted value correspondingto the hidden form field corresponds to the second parameter if thesubmitted value corresponding to the hidden form field can be decryptedto match the second parameter or that the second parameter can beencrypted to match the submitted value corresponding to the hidden formfield. Because for each instance of a form retrieval and submissionprocess, the server generates a new first parameter and a new secondparameter, the name of the hidden form field added to each retrievedform is updated and the value corresponding to the hidden form field isalso updated. Updating the first parameter and the second parameter foreach new request of a form makes it difficult for automatic completionprograms to learn the updated name of the hidden form field and itsupdated value each time. Moreover, because the correct value of thehidden form field that is determined based on the second parameter istriggered to be assigned to the hidden form field in response to adetection of a value assignment operation associated with ahuman-related operation with respect to the client device, if the serverdetermines that the submitted value corresponding to the hidden formfield matching the first parameter does not correspond to the secondparameter, than it is assumed that the form was not completed by a realperson user (a human user) and therefore the submitted data is notsuccessfully validated. If the server determines that the submitted datais not successfully validated, the server does not continue to processthe submitted data. However, if the server determines that the name ofthe hidden form field matches the first parameter and the submittedvalue corresponding to the hidden form field corresponds to the secondparameter, then it is assumed that the form was completed by a realperson user and therefore the submitted data is successfully validated.If the server determines that the submitted data is successfullyvalidated, the server does continue to process the submitted data.Examples of processing the submitted data may include granting access tothe client device to data stored by the server, performingidentification, returning login information to the client device, andcausing the client device to post the submitted data at a forum.

FIG. 3 is a flow diagram showing an embodiment of a process for formvalidation. In some embodiments, process 300 is implemented at system100.

Process 300 is similar to process 200 but includes an additional thirdparameter that is generated by the server and used to invoke a hiddenform field generation function to be used at the client device.

At 302, in response to receipt of a request for a form from a clientdevice, a first parameter, a second parameter, and a third parameter aregenerated. In some embodiments, the first parameter and the secondparameter are generated based on techniques similar to those describedin process 200. In some embodiments, the third parameter may begenerated similarly to the manner in which the first parameter and thesecond parameter are generated. For example, a value may be randomlygenerated and, in some embodiments, encrypted using an encryptiontechnique, and assigned as the third parameter.

At 304, a second triggering message including the third parameter issent to the client device, wherein the second triggering message isconfigured to cause the third parameter to be used as a function nameassociated with a hidden form field generation function at the clientdevice. The client device's (or a web browser installed at the clientdevice) generation of the hidden form field is performed by invoking ahidden form field generation function. In some embodiments, the serverdefines the function name of the hidden form field generation functionand triggers the client device (or an associated web browser) to use thethird parameter as the function name of the hidden form field generationfunction. In some embodiments, the server triggers the client to performobfuscation processing on the hidden form field generation function.

At 306, a first triggering message including the first parameter, thesecond parameter, and a defined variable is sent to the client device,wherein the first triggering message is configured to cause the hiddenform field generation function to generate a hidden form field using thethird parameter and the first parameter at the client device, the hiddenform field to be added to the form, the defined variable to be assignedas a temporary value corresponding to the hidden form field, and avalidation string to be determined based at least in part on the secondparameter.

As described above, data associated with the form is sent to the clientdevice along with the first triggering message. The form is generated atthe client device based on the received data. The first triggeringmessage may include computer code, which when executed at the clientdevice, causes the name of the first hidden form field to be assignedbased on the first parameter and, in response to detection of a valueassignment event, a validation string to be assigned to the valuecorresponding to the hidden form field. Furthermore, the hidden formfield is added to the form. In some embodiments, the client device istriggered to invoke the hidden form field generation function namedusing a third random parameter, and to generate the hidden form fieldwith a name determined based on the first parameter. In order to furtherprevent information from being intercepted and decrypted, in someembodiments, the server defines a variable to be used as the temporaryvalue of the hidden form field after the hidden form field is generated.

At 308, the temporary value corresponding to the hidden form field isreplaced with the validation string in response to a detection of avalue assignment event. Eventually, the temporary value of the hiddenform field is replaced by the validation string determined based on thesecond parameter. The temporary value of the hidden form field isreplaced by the validation string determined based on the secondparameter in response to a detection of a value assignment event. Asdescribed above, a value assignment event is configured to be any eventthat is associated with an operation/interaction with the client devicethat is associated with a human user.

At 310, optionally, an additional hidden field triggering message issent to the client device, wherein the additional hidden fieldtriggering message is configured to cause a plurality of additionalhidden fields to be generated and added to the form. In someembodiments, the server sends an additional hidden field triggeringmessage to the client device. The additional hidden field triggeringmessage includes computer code that when executed at the client device,causes multiple additional hidden fields that will not be used tovalidate the form to be generated and added to the form (as opposed tothe hidden form field generated based on the first and secondparameters, which will be used for validation). The purpose of addingsuch additional hidden fields is to confuse malicious parties that mayattempt to automatically complete the form so that the parties would notknow which hidden field of the form will be used for validation. Unlikethe hidden form field to be used for validation purposes by the server,values of the generated additional hidden fields will be assignedstrings randomly determined by the server and included in the additionalhidden field triggering message. The values assigned to the additionalhidden fields may also be randomly generated by the client device. Theserver keeps track of the data (e.g., the first triggering message, thesecond triggering message, the first parameter, the second parameter,the third parameter, the defined variable, and/or the strings to beassigned to additional hidden fields, etc.) that is sent to eachparticular client device so that the server can later compare datareceived from the client device to its maintained data.

At 312, it is determined whether the data associated with the submissionof the form includes the hidden form field that matches the firstparameter and a submitted value corresponding to the hidden form fieldthat corresponds to the second parameter. In the event that the hiddenform field matches the first parameter and the submitted valuecorresponding to the hidden form field corresponds to the secondparameter, control passes to 314 and it is determined that the dataassociated with the submission of the form is successfully validated.Otherwise, control passes to 316 and it is determined that the dataassociated with the submission of the form is not successfullyvalidated.

The form submitted by the client device includes a hidden form fieldthat is used for form validation and additional hidden fields that arenot used for form validation, but since the server had generated thefirst parameter, the server knows to look for a hidden field included inthe submitted data whose name corresponds to the first parameter, thehidden form field, and to use this determined hidden form field forvalidation purposes. Similar to what is described for process 200, ifthe server determines that the submitted value corresponding to thehidden form field matching the first parameter does not correspond tothe second parameter, then it is assumed that the form was not completedby a human user and therefore the submitted data is not successfullyvalidated. If the server determines that the submitted data is notsuccessfully validated, the server does not continue to process thesubmitted data. However, if the server determines that the name of thehidden form field matches the first parameter and the submitted valuecorresponding to the hidden form field corresponds to the secondparameter, then it is assumed that the form was completed by a humanuser and therefore the submitted data is successfully validated. If theserver determines that the submitted data is successfully validated, theserver does continue to process the submitted data.

FIG. 4 is a flow diagram showing an embodiment of a process for formvalidation. In some embodiments, process 400 is performed at system 100,for example, at device 102.

At 402, a request for a form is generated and sent to a server. Forexample, the request for the form may be generated in response to a userat the client device accessing a webpage that includes the form.

At 404, a first triggering message is received from the server, whereinthe first triggering message includes a first parameter and a secondparameter. The first triggering message and the second triggeringmessage are received at the client device. In some embodiments, thefirst triggering message also includes a defined variable. In someembodiments, a second triggering message including a third parameter isalso received from the server.

At 406, a hidden form field is generated based on the first triggeringmessage, wherein a name associated with the hidden form field isdetermined based on the first parameter and a value corresponding to thehidden form field is determined based on the second parameter. The firsttriggering message includes computer code that is configured to causethe hidden form field to be determined based on the first parameter andthe value corresponding to the hidden form field to be determined basedon the second parameter. In some embodiments, the function name of thehidden form field generation function is determined based on the thirdparameter. In some embodiments, the defined variable is assigned as atemporary value to the hidden form field. In some embodiments, avalidation string that was determined based on the second parameter wasreceived from the server or generated at the client device. Thevalidation string is to replace the temporary value of the hidden formfield in response to a value assignment event detected at the clientdevice.

At 408, in response to detection of a value assignment event, avalidation string is used to replace a temporary value corresponding tothe hidden form field, wherein the validation string is determined basedon the second parameter. As described above, the value assignment eventmay be configured as any event that is associated with an operationreceived at the client device that is associated with a real person(human) user, such as, for example, a movement of a mouse or an input ofa key from a keyword.

At 410, in response to receipt of a form submission operation, dataassociated with submission of the form is sent to the server. Forexample, the form submission operation may be associated with a userselection of a button presented with the form at the webpage. The serverwill validate the data submitted over the form based at least in part oncomparing data including the submitted name and value of the hidden formfield to the first parameter and the second parameter. If the serverdetermines that the submitted data can be successfully validated, thenthe server may send further data to the client device, such as dataassociated with granting access to the client device to protectedinformation, for example.

FIG. 5 is a flow diagram showing an embodiment of a process for formvalidation. In some embodiments, process 500 is performed at system 100.

At 502, a request for a form is generated at a client device and sent toa server.

At 504, in response to receipt of the request for a form, the servergenerates a first parameter, a second parameter, and a third parameter.

At 506, a first triggering message and a second triggering message aresent by the server to the client device, wherein the first triggeringmessage includes the first parameter, the second parameter, and adefined variable and the second triggering message includes the thirdparameter.

At 508, the third parameter is used by the client device as a functionname of a hidden form field generation function.

At 510, the hidden form field generation function is invoked by theclient device using the third parameter to generate a hidden form field,wherein a name associated with the hidden form field comprises the firstparameter and a temporary value corresponding to the hidden form fieldcomprises the defined variable.

At 512, in response to detection of a value assignment event, the clientdevice assigns a validation string to replace the temporary valuecorresponding to the hidden form field, wherein the validation string isdetermined based on the second parameter.

At 514, optionally, an additional hidden field triggering message issent by the server to the client device, wherein the additional hiddenfield triggering message is configured to cause a plurality ofadditional hidden fields to be generated and added to the form.

At 516, in response to a form submission operation received at theclient device, data associated with submission of the form is sent bythe client device to the server.

At 518, it is determined by the server whether the data associated withthe submission of the form includes the hidden form field that matchesthe first parameter and a submitted value corresponding to the hiddenform field that corresponds to the second parameter.

Regarding the various process embodiments described above, for the sakeof simplicity, all have been presented as combinations of a series ofactions. However, persons skilled in the art should be aware that thisapplication is not limited by the sequence of actions described, becausepursuant to this application, certain steps may be executed in othersequences or simultaneously.

FIG. 6 is a diagram showing an embodiment of a system of formvalidation. In the example, system 600 includes generation element 601,first triggering element 602, and verification element 603. In someembodiments, system 600 may be integrated in a web server, or it may beconnected to a web server as an independent entity.

The elements can be implemented as software components executing on oneor more processors, as hardware such as programmable logic devicesand/or Application Specific Integrated Circuits designed to performcertain functions, or a combination thereof. In some embodiments, theelements can be embodied by a form of software products which can bestored in a nonvolatile storage medium (such as optical disk, flashstorage device, mobile hard disk, etc.), including a number ofinstructions for making a computer device (such as personal computers,servers, network equipment, etc.) implement the methods described in theembodiments of the present invention. The elements may be implemented ona single device or distributed across multiple devices.

Generation element 601 is configured to generate a first randomparameter and a second random parameter in response to a request for aform received from a client device. In some embodiments, the firstparameter and the second parameter are assigned values that are randomlygenerated by the server. In some embodiments, generation element 601 isconfigured to encrypt each of the values randomly generated respectivelyfor the first parameter and the second parameter. In one example, thetype of encryption used to encrypt the first parameter and the secondparameter may have been predetermined. In another example, the type ofencryption used may be determined automatically based on a computerprogram executing at the server.

First triggering element 602 is configured to send a first triggeringmessage that includes the first parameter and the second parameter tothe client device. The client device is configured to generate the formbased on the received first triggering message, including a hidden formfield that is added to the form. The name of the hidden form field isdetermined based on the first parameter. In some embodiments, avalidation string is also generated by first triggering element 602,generation element 601, or the client device based on the secondparameter. After the hidden form field is generated, a temporary valueis initially assigned as the value corresponding to the hidden formfield. The validation string is eventually used to replace the temporaryvalue previously assigned to the hidden form field in response to avalue assignment event detected at the client device.

Verification element 603 is configured to receive and verify dataassociated with a submission of the form. Verification element 603 isconfigured to determine a hidden field from the submitted data whosename matches the first parameter (the hidden form field) and todetermine whether a submitted value associated with the fieldcorresponds to the second parameter. In the event that the validationstring that was assigned to the hidden form field is the same as thesecond parameter, verification element 603 is configured to determinewhether the submitted value corresponding to the hidden form field isthe same as the second parameter. In the event that the validationstring that was assigned to the hidden form field is determined as anencryption of at least the second parameter, then verification element603 is configured to determine whether the submitted value correspondingto the hidden form field is the same as the encryption of at least thesecond parameter. If verification element 603 determines that the hiddenfield from the submitted data whose name matches the first parameter(the hidden form field) and the submitted value associated with thefield correspond to the second parameter, then verification element 603determines that the submitted data is successfully validated and mayproceed to process the data. Otherwise, verification element 603determines that the submitted data is not successfully validated and maynot proceed to process the data.

FIG. 7 is a diagram showing an embodiment of a system of formvalidation. In the example, system 700 includes generation element 701,second triggering element 702, first triggering element 703, thirdtriggering element 704, and verification element 705. In someembodiments, system 700 may be integrated in a web server, or it may beconnected to a web server as an independent entity.

The elements can be implemented as software components executing on oneor more processors, as hardware such as programmable logic devicesand/or Application Specific Integrated Circuits designed to performcertain functions, or a combination thereof. In some embodiments, theelements can be embodied by a form of software products which can bestored in a nonvolatile storage medium (such as optical disk, flashstorage device, mobile hard disk, etc.), including a number ofinstructions for making a computer device (such as personal computers,servers, network equipment, etc.) implement the methods described in theembodiments of the present invention. The elements may be implemented ona single device or distributed across multiple devices.

Generation element 701 is configured to generate a first randomparameter, a second random parameter, and a third parameter in responseto a request for a form received from a client device.

Second triggering element 702 is configured to send a second triggeringmessage to the client device. The second triggering message includes thethird parameter. The second triggering message is configured to causethe client device to use the third random parameter as the function nameof a hidden form field generation function. In some embodiments, thesecond triggering message is further configured to cause the clientdevice to perform obfuscation processing on the hidden form fieldgeneration function.

First triggering element 703 is configured to send a first triggeringmessage that includes the first parameter and the second parameter tothe client device.

In some embodiments, the first triggering message further includes adefined variable. The client device is configured to generate the formbased on the received first triggering message, including a hidden formfield that is added to the form. The hidden form field may be generatedusing the hidden form field generation function associated with afunction name associated with the third parameter. The name of thehidden form field is determined based on the first parameter. In someembodiments, a validation string is also generated by system 700 or theclient device based on the second parameter. After the hidden form fieldis generated, a temporary value is initially assigned as the valuecorresponding to the hidden form field. In some embodiments, thetemporary value is the defined variable sent by first triggering element703. The validation string is eventually used to replace the temporaryvalue previously assigned to the hidden form field in response to avalue assignment event detected at the client device.

Third triggering element 704 is configured to send an additional hiddenfield triggering message to the client device. The additional hiddenfield triggering message is configured to cause multiple hidden fieldsto be generated and added to the form at the client device.

Verification element 705 is configured to receive and verify dataassociated with a submission of the form. Verification element 705 isconfigured to identify the correct hidden field of the submitted datathat is used to perform validation, the hidden form field, based onrecognizing the hidden field associated with a name that matches thefirst parameter. This way, unlike malicious automatic form completionprograms, verification element 705 will not be confused by the presenceof multiple hidden fields, such as those generated based on theadditional hidden field triggering message.

In the event that the validation string that was assigned to the hiddenform field is the same as the second parameter, then verificationelement 705 is configured to determine whether the submitted valuecorresponding to the hidden form field is the same as the secondparameter. In the event that the validation string that was assigned tothe hidden form field is determined as an encryption of at least thesecond parameter, then verification element 705 is configured todetermine whether the submitted value corresponding to the hidden formfield is the same as the encryption of at least the second parameter. Ifverification element 705 determines that the hidden field from thesubmitted data whose name matches the first parameter (the hidden formfield) and the submitted value associated with the field correspond tothe second parameter, then verification element 705 determines that thesubmitted data is successfully validated and may proceed to process thedata. Otherwise, verification element 705 determines that the submitteddata is not successfully validated and may not proceed to process thedata.

The embodiments included in the present application are described in aprogressive manner and the explanation of each embodiment focuses onareas of difference from the other embodiments, and the descriptionsthereof may be mutually referenced for portions of each embodiment thatare identical or similar. In regard to system-type embodiments, becausethey are fundamentally similar to the process embodiments, theirdescriptions are relatively simple. Refer to partial explanations in themethod embodiments where relevant.

Lastly, it must also be explained that, in this document, relationalterms such as “first” or “second” are used only to differentiate betweenone entity or operation and another entity or operation, withoutnecessitating or implying that there is any such actual relationship orsequence between these entities or operations. Furthermore, the terms“comprise” or “contain” or any of their variants are to be taken intheir non-exclusive sense. Thus, processes, methods, objects, orequipment that comprise a series of elements not only comprise thoseelements, but also comprise other elements that have not been explicitlylisted or elements that are intrinsic to such processes, methods,objects, or equipment. In the absence of further limitations, for anelement that is limited by the phrase “comprises a(n) . . . ,” theexistence of additional identical elements in processes, methods,objects or equipment that comprise the elements is not excluded.

For convenience of description, when describing the systems above,functions are described as separate elements. Of course, duringimplementation of the present application, the functions of the variouselements may be achieved in the same or multiple software and/orhardware configurations.

As can be seen through the description of the embodiments above, personsskilled in the art can clearly understand that the present applicationcan be realized with the aid of software plus the necessary commonhardware platform. Based on such an understanding, the technicalproposal of the present application, whether intrinsically or withrespect to portions that contribute to the prior art, is realizable inthe form of software products. These computer software products can bestored on storage media, such as ROM/RAM, diskettes, and compact discs,and include a certain number of commands used to cause a set ofcomputing equipment (which could be a personal computer, server, ornetwork equipment) to execute the methods described in the embodiments,or certain portions of the embodiments, of the present application.

This document has employed specific examples to expound the principlesand embodiments of the present application. The above embodimentexplanations are only meant to aid in comprehension of the methods ofthe present application and of its core concepts. Moreover, a personwith ordinary skill in the art would, on the basis of the concepts ofthe present application, be able to make modifications to specificapplications and to the scope of applications. To summarize the above,the contents of this description should not be understood as limitingthe present application.

Although the foregoing embodiments have been described in some detailfor purposes of clarity of understanding, the invention is not limitedto the details provided. There are many alternative ways of implementingthe invention. The disclosed embodiments are illustrative and notrestrictive.

What is claimed is:
 1. (canceled)
 2. A system for form validation,comprising: one or more processors configured to: generate a firstparameter and a second parameter in response to a request for a formfrom a client device, wherein at least one of the first parameter andthe second parameter is randomly generated; send a first triggeringmessage including the first parameter and the second parameter to theclient device, wherein the first triggering message is configured tocause a hidden form field to be generated at the client device based atleast in part on the first parameter and to be added to the form and avalue corresponding to the hidden form field to be determined based atleast in part on the second parameter; receive data associated withsubmission of the form; determine whether the data associated with thesubmission of the form includes the hidden form field that matches thefirst parameter and a submitted value corresponding to the hidden formfield that corresponds to the second parameter; and in the event thatthe hidden form field matches the first parameter and the submittedvalue corresponding to the hidden form field corresponds to the secondparameter, determine that the data associated with the submission of theform is successfully validated; and one or more memories coupled to theone or more processors and configured to provide the one or moreprocessors with instructions.
 3. The system of claim 2, wherein the oneor more processors are further configured to: generate a thirdparameter; and send a second triggering message including the thirdparameter to the client device, wherein the second triggering message isconfigured to cause the third parameter to be used as a function nameassociated with a hidden form field generation function at the clientdevice.
 4. The system of claim 2, wherein a validation string isconfigured to be determined based on the second parameter.
 5. The systemof claim 4, wherein the one or more processors are further configuredto: generate a defined variable, wherein the defined variable isincluded in the first triggering message, wherein the defined variableis configured to be assigned as a temporary value corresponding to thehidden form field.
 6. The system of claim 5, wherein the one or moreprocessors are further configured to replace the temporary valuecorresponding to the hidden form field with the validation string inresponse to detection by the client device of a value assignment event.7. The system of claim 6, wherein the value assignment event isassociated with a human-related operation with respect to the clientdevice.
 8. The system of claim 6, wherein the value assignment eventcomprises one or more of the following: a mouse movement, a keyboardoperation, and a touch screen operation.
 9. The system of claim 2,wherein the one or more processors are further configured to send anadditional hidden field triggering message, wherein the additionalhidden field triggering message is configured to cause a plurality ofadditional hidden fields to be generated and added to the form.
 10. Thesystem of claim 2, wherein determining whether the data associated withthe submission of the form includes the hidden form field that matchesthe first parameter comprises determining whether a name of the hiddenform field matches the first parameter.
 11. A method for formvalidation, comprising: generating, using one or more processors, afirst parameter and a second parameter in response to a request for aform from a client device, wherein at least one of the first parameterand the second parameter is randomly generated; sending a firsttriggering message including the first parameter and the secondparameter to the client device, wherein the first triggering message isconfigured to cause a hidden form field to be generated at the clientdevice based at least in part on the first parameter and to be added tothe form and a value corresponding to the hidden form field to bedetermined based at least in part on the second parameter; receivingdata associated with submission of the form; determining whether thedata associated with the submission of the form includes the hidden formfield that matches the first parameter and a submitted valuecorresponding to the hidden form field that corresponds to the secondparameter; and in the event that the hidden form field matches the firstparameter and the submitted value corresponding to the hidden form fieldcorresponds to the second parameter, determine that the data associatedwith the submission of the form is successfully validated.
 12. Themethod of claim 11, further comprising: generating a third parameter;and sending a second triggering message including the third parameter tothe client device, wherein the second triggering message is configuredto cause the third parameter to be used as a function name associatedwith a hidden form field generation function at the client device. 13.The method of claim 11, wherein a validation string is configured to bedetermined based on the second parameter.
 14. The method of claim 13,further comprising: generating a defined variable, wherein the definedvariable is included in the first triggering message, wherein thedefined variable is configured to be assigned as a temporary valuecorresponding to the hidden form field.
 15. The method of claim 14,further comprising replacing the temporary value corresponding to thehidden form field with the validation string in response to detection bythe client device of a value assignment event.
 16. The method of claim15, wherein the value assignment event is associated with ahuman-related operation with respect to the client device.
 17. Themethod of claim 11, further comprising sending an additional hiddenfield triggering message, wherein the additional hidden field triggeringmessage is configured to cause a plurality of additional hidden fieldsto be generated and added to the form.
 18. A computer program productbeing embodied in a non-transitory computer readable medium andcomprising computer instructions for: generating a first parameter and asecond parameter in response to a request for a form from a clientdevice, wherein at least one of the first parameter and the secondparameter is randomly generated; sending a first triggering messageincluding the first parameter and the second parameter to the clientdevice, wherein the first triggering message is configured to cause ahidden form field to be generated at the client device based at least inpart on the first parameter and to be added to the form and a valuecorresponding to the hidden form field to be determined based at leastin part on the second parameter; receiving data associated withsubmission of the form; determining whether the data associated with thesubmission of the form includes the hidden form field that matches thefirst parameter and a submitted value corresponding to the hidden formfield that corresponds to the second parameter; and in the event thatthe hidden form field matches the first parameter and the submittedvalue corresponding to the hidden form field corresponds to the secondparameter, determining that the data associated with the submission ofthe form is successfully validated.